所有計算和通訊任務都是透過實體設備來完成的,而這種設備通常是嘈雜且不可靠的。這意味著設備在執行其過程時出錯的可能性不為零。解決這個問題的一種方法是嘗試製造更好的設備。但這並不總是可能的,要么是因為沒有已知的方法來製造更好的設備,要么是因為製造近乎完美的設備成本太高。
值得慶幸的是,我們已經發現了可用於增加嘈雜的硬體輸出正確結果的機率的程式和演算法,同時成本略有增加。處理此類過程和演算法的研究領域稱為糾錯。
這個領域最初是隨著二十世紀中葉模擬和數位經典通訊和計算設備的發展而出現的。如今,經典糾錯是一個成熟的領域,其結果應用於各種情況。例如,如果您用來閱讀本書的電腦透過 Wi-Fi 連接到互聯網,那麼您的電腦和路由器會採用糾錯演算法來偵測接收到的資料包在傳輸過程中是否損壞。
另一方面,量子糾錯領域始於 20 世紀 90 年代末,涉及量子通訊和計算設備上的糾錯技術。從那時起它就取得了快速的進步,並且發現了許多技術和具體演算法。這是非常令人鼓舞的,因為量子電腦的硬體是如此之小和敏感,我們似乎不太可能使物理錯誤率足夠小以構建不需要糾錯的量子電腦。
要了解該領域,最好從一個抓住該領域本質的簡單問題開始。這個簡單的糾錯問題,無論是經典的還是量子的,都有一個我們現在提出的抽像模型。
愛麗絲想透過連接他們的傳輸線或通道向鮑伯發送訊息。資訊可以是經典情況下的一串比特,也可以是量子情況下的一串量子比特。如圖所示,我們有以下場景
正如您所看到的,我們假設通道是有雜訊的,因此任何資訊在傳輸過程中都可能出錯。另一方面,我們假設愛麗絲和鮑伯擁有完美的裝置,這使他們能夠無錯誤地執行糾錯演算法。
為了更好地理解量子糾錯,必須先學習古典糾錯的基礎知識。有幾個原因。首先,經典演算法在概念上通常比量子演算法更簡單,因此更容易理解。其次,許多量子糾錯演算法都是直接或間接地由經典糾錯演算法建構而成。因此,如果要學習如何做到這一點,就應該了解經典演算法的屬性。
在這裡我們需要使用到stac套件
!pip install git+https://github.com/abdullahkhalids/stac
執行以下程式碼可以測試是否安裝成功
import stac
cd = stac.CommonCodes.generate_code("[[7,1,3]]")
cd.generator_matrix
circ = cd.construct_syndrome_circuit()
circ.draw()
# stac uses qiskit to simulate circuits
# if this fails, qiskit is not properly installed
circ.simulate()
# it uses stim to sample from circuits
# if this fails, stim is not properly installed
circ.sample()
import stac
# create circuit object.
# specify the number of qubits in the circuit
circ = stac.Circuit.simple(2)
# operations are added with the append method
circ.append('H', 0)
circ.append('CX', 0, 1)
# you can draw the circuit using the draw method
circ.draw()
# you can simulate a circuit using qiskit's statevector simulator like so
# this will present the output state in a nice readable form
circ.simulate()
# or you can use stim https://github.com/quantumlib/Stim/
# to sample from the circuit
# first add measurements to the circuit
circ.append('M', 0)
circ.append('M', 1)
# then sample 10 times
circ.sample(10)
以上資料參考自:https://github.com/abdullahkhalids/qecft